import axios from 'axios';
// import { Message, Loading } from 'element-ui'
import {
    Toast
} from 'vant';
let BASE_URL = '',
    loadingInstance;
let HOST = process.env.NODE_ENV;
switch (HOST) {
    case 'development':
        BASE_URL = 'http://120.78.154.152';
        break;
    case 'test':
        BASE_URL = 'http://120.78.154.152';
        break;
    default:
        BASE_URL = 'http://120.78.154.152';
}



export function http(requestObj) {
    let {showLoading=false} = requestObj
    axios.create({
        //crossDomain: true,//设置cross跨域
        withCredentials: false, //跨域请求是否允许携带cookie资源凭证
        baseurl: BASE_URL,
        time: 5000 //请求超时时间
        // responseType:"arraybuffer"  返回的数据格式
    })
    //  request请求拦截器
    axios.interceptors.request.use(config => {

        // let token=localstorage.getItem('token');
        // token && (config.headers.Authorization=token);//请求携带token
        // config.headers = {
        //     'Content-Type': 'application/x-www-form-urlencoded'  //转换数据格式
        // }
        if(showLoading){
            loadingInstance = Toast.loading({
                duration: 0,
                forbidClick: true,
                message: '加载中……',
            });

        }
        return config;
    }, error => {
        return Promise.reject(error);
    })
    // 成功状态 有3的接口一般是资源重定向
    // service.defaults.validateStatus=status=>{
    //     return /^(2|3)\d{2}$/.test(status);
    // };

    // response响应拦截器
    axios.interceptors.response.use(response => {
        showLoading&&setTimeout(() => {
            loadingInstance.clear();
        }, 300)
        return response;
    }, error => {
        showLoading&&setTimeout(() => {
            loadingInstance.clear();
        }, 300)
        let {
            response
        } = error;
        if (response) {
            //服务器有返回内容
            var errormsg = '';
            switch (response.status) {
                case 400:
                    errormsg = '错误请求'
                    break;
                case 401:
                    errormsg = '未登录,请重新登录'
                    break;
                case 403:
                    errormsg = '决绝访问'
                    break;
                case 404:
                    errormsg = '请求错误，未找到该资源'
                    break;
                case 405:
                    errormsg = '请求方法未允许'
                    break;
                case 408:
                    errormsg = '请求超时'
                    break;
                case 500:
                    errormsg = '服务器出错'
                    break;
                case 501:
                    errormsg = '网络未实现'
                    break;
                case 502:
                    errormsg = '网络错误'
                    break;
                case 503:
                    errormsg = '服务不可用'
                    break;
                case 504:
                    errormsg = '网络超时'
                    break;
                case 505:
                    errormsg = 'http版本不支持该请求'
                    break;
                default:
                    errormsg = '连接错误'
            }
            // Message({ type: 'warning', message: errormsg });
            Toast.fail(errormsg);
            return false;
        } else {
            //服务器连结果都没有返回  有可能是断网或者服务器奔溃
            if (!window.navigator.online) {
                //断网处理
                Toast.fail('网络中断');
                return;
            } else {
                //服务器奔了
                Toast.fail('服务器繁忙');
                return Promise.reject(error);
            }
        }
    })

    let {
        url,
        data,
        type = 'get'
    } = requestObj
    return new Promise((resolve, reject) => {
        axios[type](BASE_URL+url, data && {
            data: data
        }).then(res => {
            resolve(res.data);
        }).catch(err => {
            reject(err.data);
        })
    });
}
//模板
// $http({
//     url: 'http://120.78.154.152/getIndexArticle',
//     data: {},
//     type: 'post'
// }).then((data)=>{

// }).catch((err)=>{

// })


